package set;
/*
           哈希值：
               对象的整数表现形式
               1. 如果没有重写hashCode方法，不同对象计算出的哈希值是不同的
               2. 如果已经重写hashcode方法，不同的对象只要属性值相同，计算出的哈希值就是一样的
               3. 但是在小部分情况下，不同的属性值或者不同的地址值计算出来的哈希值也有可能一样。（哈希碰撞）

        */
public class demo3 {
    public static void main(String[] args) {

        //   1. 如果没有重写hashCode方法，不同对象计算出的哈希值是不同的
        Student s1 = new Student("zhangsan",18);
        Student s2 = new Student("zhangsan",18);
      /*  System.out.println(s1.hashCode());//189568618
        System.out.println(s2.hashCode());//793589513*/
        //不一样,所以我们要重写hashCode()
        //  2. 如果已经重写hashcode方法，不同的对象只要属性值相同，计算出的哈希值就是一样
        System.out.println("------------------");
        System.out.println(s1.hashCode());//1461067297
        System.out.println(s2.hashCode());//1461067297

       // 3. 但是在小部分情况下，不同的属性值或者不同的地址值计算出来的哈希值也有可能一样。（哈希碰撞）
        //哈希碰撞
        System.out.println("abc".hashCode());//96354
        System.out.println("acD".hashCode());//96354
    }
}
